# 设置 CMake 的最低版本要求
cmake_minimum_required(VERSION 3.10.0)

# 改为 CXX 语言（因为源文件是 .cpp）
project(MyProject VERSION 1.0 LANGUAGES CXX)

# 在使用 clang-cl 时，需要查找 Windows SDK 的 mt.exe
# 在 project() 之后设置，以便 CMake 能够正确配置
if(CMAKE_CXX_COMPILER_ID MATCHES "Clang" AND CMAKE_CXX_SIMULATE_ID MATCHES "MSVC")
    # 尝试查找 mt.exe（Windows Manifest Tool）
    # 首先尝试从 Windows SDK 路径查找
    file(GLOB WINDOWS_SDK_PATHS
        "C:/Program Files (x86)/Windows Kits/10/bin/*/x64/mt.exe"
        "C:/Program Files (x86)/Windows Kits/10/bin/*/x86/mt.exe"
        "C:/Program Files/Windows Kits/10/bin/*/x64/mt.exe"
        "C:/Program Files/Windows Kits/10/bin/*/x86/mt.exe"
    )
    if(WINDOWS_SDK_PATHS)
        list(GET WINDOWS_SDK_PATHS 0 CMAKE_MT_FOUND)
        set(CMAKE_MT "${CMAKE_MT_FOUND}" CACHE FILEPATH "Path to mt.exe" FORCE)
    else()
        # 如果找不到，尝试从系统路径查找
        find_program(CMAKE_MT_FOUND mt.exe)
        if(CMAKE_MT_FOUND)
            set(CMAKE_MT "${CMAKE_MT_FOUND}" CACHE FILEPATH "Path to mt.exe" FORCE)
        else()
            # 如果还是找不到，使用一个空字符串（CMake 会跳过 manifest 处理）
            set(CMAKE_MT "" CACHE FILEPATH "Path to mt.exe (not found)" FORCE)
            message(WARNING "mt.exe not found. Manifest processing may be disabled.")
        endif()
    endif()
endif()

# 设置包含头文件的路径（当前目录可省略，CMake 会自动查找）
include_directories("./")

# 获取当前目录下所有的 C++ 源文件（.cpp）
file(GLOB SRC_FILES "./*.cpp")

# 编译选项设置（区分 C++ 编译器）
if(MSVC)
    add_compile_options("/utf-8")
    add_compile_options("/wd4996")  # 解决时间函数相关警告
else()
    add_compile_options("-Wall")    # 开启所有警告
    add_compile_options("-std=c++11")  # C++ 标准（根据需要调整为 c++14/c++17 等）
endif()

# 设置 C++ 标准（替代 C 标准）
set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CXX_STANDARD_REQUIRED True)

# 创建可执行文件（目标名 main，源文件为所有 .cpp）
add_executable(main ${SRC_FILES})